/* Copyright (C) 2024 wlly-lzh
 * Created On 24/03/06
 * Sequence List   顺序表
 * */
#ifndef _SQLIST_H
#define _SQLIST_H

#include <stdbool.h>

#define u_int unsigned int
typedef struct LSqList LSqList;
struct LSqList { };

LSqList * Create_LSqList(unsigned int length);
// 初始化顺序表大小
bool Destroy_LSqList(LSqList ** List);
// 销毁顺序表
void Clear_LSqList(LSqList * List);
// 清空顺序表
bool Insert_LSqList(LSqList *List, u_int addr, void *Data);
// 插入顺序表
bool IsFull_LSqList(const LSqList *List);
// 判断是否满表
bool IsEmpty_LSqList(const LSqList *List);
// 判断表是否为空
bool Update_LSqList(LSqList *List, u_int addr, void *Data);
// 修改
bool Delete_LSqList(LSqList *List, u_int addr);
// 删除
u_int Length_LSqList(const LSqList *List);
// 目前储存长度
u_int MaxLength_LSqList(const LSqList *List);
// 最大容量
bool GetItem_LSqList(const LSqList *List,u_int addr,void **Data);
// 取元素

bool Locate_LSqList(const LSqList *List,void *Data,
		bool (*Compare)(const void *,const void *),unsigned int *addr);
// 判断元素的位置
// bool Compare(const void *A,const void *B);
// A - 表中的元素；B - Data
// 如果 A == B 返回true，Locate_LSqList函数终止。

// ！终止程序说明:
//  返回值---对应原因
//  4      |  出现了空指针
//  3      |  分配内存失败

#undef u_int // unsigned int

#endif // _SQLIST_H
